import toTree from "@/utils/toTree"
let modules = import.meta.glob("../pages/home/**/*.vue")

// vite中还有个方法 eager 可以获取 默认导入的组件
let syncComponents = import.meta.globEager("../pages/home/**/*.vue")


// console.log(modules)
// console.log(syncComponents)
// import aa from "@/pages/home/aa/index.vue"

// console.log(aa)
// console.log(modules)

// 目的将读取到的modules转变成我们的routes配置
// 一个routes配置是这样的{path:"xx",component:()=>import("xxx")}

// 约定式路由
// 1、约定所有的页面都必须写在pages/home这个文件夹下面
// 2、所有的页面都需要使用文件夹+index.vue这种编写方式

// 声明一个扁平的路由配置数组
let flatRoutes = []


// 遍历modules
for(let path in modules){
    // console.log(path)
    let component = modules[path]   // 获取读取的组件

    let syncCom = syncComponents[path].default;
    // console.log(syncCom)


    // console.log(component().then(res=>{console.log(res)}))
    let reg = /^\.{2}\/pages\/home\/(.+)\/index\.vue$/
    // 使用正则匹配路径
    let match = path.match(reg)
    // 排除掉匹配到null的这一次"../pages/home/index.vue"
    if(match){
        let route = {
            path:match[1],
            component,
            meta:syncCom['meta'] ?? {},
            name:match[1]
        }
        flatRoutes.push(route)
    }
}

// console.log(flatRoutes)



// 二次处理数据，因为扁平转树形需要有id和pid，现在给每个对象都要添加上id和pid
flatRoutes.forEach(route => {
    // 给每一个都添加上id和pid
    let pathArr = route.path.split("/")
    // console.log(pathArr)

    if(pathArr.length===1){
        // 说明这些都是父节点，只需要添加id就可以
        route.id = pathArr.join("")
    }else{
        // 不是父节点的，需要添加上id和pid
        // 先拷贝pathArr
        let newPathArr = [...pathArr]
        route.id = newPathArr.join("-")
        // 删除掉最后一项就是它的父节点,删除的那一项替换掉原来的path
        let path = newPathArr.pop()
        route.pid = newPathArr.join("-")
        route.path = path
    }
})
// console.log(toTree)

// 扁平转树形
let routes = toTree(flatRoutes,'id','pid')

// console.log(routes)

export default routes









